// import axios from 'axios'
// import qs from 'qs'
// import store from '@/store'
// import {getToken} from '@/utils/auth'
// import {Indicator, Toast} from 'mint-ui';

// // axios 设置
// axios.defaults.timeout = 5000; // 请求超时时间
// // axios.defaults.baseURL = process.env.VUE_APP_BASE_API; // url = base url + request url
// axios.default.baseUrl = '';
// // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; // post请求头的设置
// axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; 
// // 请求拦截器
// axios.interceptors.request.use(
//     config => {
//         // do something before request is sent在发送请求之前
//         if (store.getters.token) {
//             //让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
//             config.headers['X-Token'] = getToken()
//         }
//         return config
//     },
//     error => {
//         // do something with request error处理请求错误
//         console.log('请求出错了！');
//         console.log(error, 'err'); // for debug
//         return Promise.reject(error)
//     }
// );

// // 返回拦截器
// axios.interceptors.response.use(
//     /**
//      * If you want to get http information such as headers or status
//      * 如果你想获得 http 信息，比如头信息或者状态信息
//      * Please return  response => response
//      * 请返回响应
//      */

//     /**
//      * Determine the request status by custom code
//      * Here is just an example
//      * You can also judge the status by HTTP Status Code
//      * 使用自订程式码判断请求状态 
//      * 这里只是一个例子 
//      * 你也可以使用 HTTP状态码判断请求状态
//      */
//     response => {
//         Indicator.close();
//         const res = response.data;//res.code自订程式码判断请求状态&& res.code === 0
//         if (response.status === 200&& res.code === 1 ) {
//             Toast({
//                 // message: res.msg,
//                 message:'那个',
//                 position: 'middle',
//                 duration: 2000
//             });
//             return Promise.resolve(res)
//         } else {
//             Toast({
//                 message: res.msg,
//                 // message:'这个这个',
//                 position: 'middle',
//                 duration: 2000
//             });
//             if (res.code === 10001) {
//                 // 特定情况下，重新登录
//                 //你已经退出了，你可以取消留在这个页面，或者再次登录
//                 Toast('You have been logged out, you can cancel to stay on this page, or log in again');
//                 store.dispatch('user/resetToken').then(() => {
//                     location.reload()// 为了重新实例化vue-router对象 避免bug
//                 })
//             }
//             return Promise.reject(res)
//         }
//     },
//     error => {
//         Indicator.close();
//         console.log('err' + error); // for debug
//         const responseCode = error.response.status;
//         switch (responseCode) {
//             // 401：未登录
//             case 401:
//                 break;
//             // 404请求不存在
//             case 404:
//                 Toast({
//                     message: '网络请求不存在',
//                     position: 'middle',
//                     duration: 2000
//                 });
//                 break;
//             default:
//                 Toast({
//                     message: error.response.data.message,
//                     //message: '66',
//                     position: 'middle',
//                     duration: 2000
//                 });
//         }
//         return Promise.reject(error)
//     }
// );

// /**
//  * 封装get方法，对应get请求
//  * @param {String} url [请求的url地址]
//  * @param {Object} params [请求时携带的参数]
//  */
// function get (url, params = {}) {
//     //Promise 的主要作用就是用于封装异步操作，以便根据异步操作是否成功来进行后续的操作
//     return new Promise((resolve, reject) => {
//         axios
//             .get(url, {
//                 params: params
//             })
//             .then(res => {
//                 resolve(res.data)
//             })
//             .catch(err => {
//                 reject(err)
//             })
//     })
//     // 或者return axios.get();
// }
// /**
//  * post方法，对应post请求
//  * @param {String} url [请求的url地址]
//  * @param {Object} params [请求时携带的参数]
//  */
// function post (url, data) {
//     return new Promise((resolve, reject) => {
//         axios
//             .post(url, qs.stringify(data))
//             .then(res => {
//                 resolve(res.data)
//             })
//             .catch(err => {
//                 reject(err)
//             })
//     })
//     //  return axios.post();
// }

// export { get, post }



import axios from "axios";
import store from '@/store'
import {getToken} from './auth'


// 创建axios实例
const service = axios.create({
  baseURL: "/api", // api 的 base_url
  headers:{
    'Content-Type': 'application/json;charset=UTF-8'
  },
  timeout: 10000, // 请求超时时间
  maxRedirects: 0,
});

// request拦截器
service.interceptors.request.use(
  config => {
    // config.headers["Access-Control-Allow-Origin"] = "*";
    // 携带一个token
    if (store.getters.usertoken) {
      console.log('给请求头加令牌'+getToken())
        //让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
        config.headers['Authorization'] = 'Bearer'+' '+getToken();
    }
    return config;
  },
  error => {
    // Do something with request error
    return Promise.reject(error);
  }
);

// response 拦截器
service.interceptors.response.use(
  response => {
    /**
     * code为非200是抛错 可结合自己业务进行修改
     */
    if (response.status !== 200 || response.code !== 1) {
      console.log(response.code);
    //   response.data.code = 400;
      return response.data;
    }
    return response.data;
  },
  error => {
    return Promise.reject(error.response.data);
  }
);

export default service;
